/**
 * Post Entity
 * 定义一个post 实体
 */
import {
  Column,
  Entity,
  ManyToMany,
  ManyToOne,
  PrimaryColumn,
  PrimaryGeneratedColumn,
} from 'typeorm';
import { User } from './user.entity';

// 从 typeorm 导入创建实体所需的装饰器和类型。
// 从 ./user.entity 导入 User 实体，因为 Post 实体与 User 实体存在关联。

@Entity('post')
export class Post {
  //@PrimaryGeneratedColumn() 装饰器将 id 属性标记为主键，并让数据库自动生成唯一的递增数值。
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  title: string;
  @Column()
  content: string; 
  // 在 @ManyToOne 一侧，即在外键拥有者一侧，设置 onDelete，就可以使用外键的级联功能，这里设置级联删除，当删除 user 时，user 的所有 post 会被级联删除
  @ManyToOne((type) => User, (user) => user.posts, {
    cascade: true, // 自动保存相关对象
    onDelete: 'CASCADE',
  })
  user: User;
}
